package com.sanbi.common.express.response;

import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

/**
 * @description:
 * @author: wanpeng
 * @create: 2024-05-14 08:47
 * @Version 1.0
 **/
@Data
@NoArgsConstructor
public class CaiNiaoResponse<T> implements Serializable {

    public static final String SUCCESS_CODE = "1";

    public static final String FAILED_CODE = "0";

    /** 	操作标识 1=操作成功, 0=操作失败, 但是貌似菜鸟存在其他的非数字的字符串定义，这种情况需要自行判断 */
    private String result;
    /** 处理结果描述 */
    private String msg;
    /** 操作数据 */
    private T data;
    /**
     * 错误信息
     *  <br> error_code, error_msg
     */
    private List<CaiNiaoError> errors;
    /**
     * 返回结果数据列表
     */
    private List<T> dataList;

    public CaiNiaoResponse(String result, String msg, T data) {
        this.result = result;
        this.msg = msg;
        this.data = data;
    }

    /**
     * 参数错误结果
     * @return
     * @param <T>
     */
    public static <T> CaiNiaoResponse<T> invalidParam() {
        return new CaiNiaoResponse<T>(FAILED_CODE, "invalid params.", null);
    }

    /**
     * 参数错误结果
     * @return
     * @param <T>
     */
    public static <T> CaiNiaoResponse<T> serviceError() {
        return new CaiNiaoResponse<T>(FAILED_CODE, "cainiao system error.", null);
    }
}
